home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 142 / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan).7z / Gekkan Dennou Club - 2000.3 Vol. 142 (Japan) (Track 1).bin / tools / s_tool / move2.c < prev    next >
Text File  |  1998-08-31  |  20KB  |  1,024 lines

  1. #include    "JX250.H"
  2. #include    <sys\iocs.h>
  3. #include    <sys\dos.h>
  4. #include    <sys\scsi.h>
  5. #include    <stdio.h>
  6. #include    <stdlib.h>
  7. #include    <_tnb.c>
  8.  
  9. static    short    chgsize=0;    //0:x 1:y
  10.  
  11. /************************************************************
  12.     上 ボタンチェック
  13. [out] r= 0; 正常終了
  14.      1; キャンセル終了
  15.     99; 終了
  16. *************************************************************/
  17. int    click_botton1( ty,xx,yy )
  18. int    ty,xx,yy;
  19. {
  20. int    i,r;
  21. UNchar    buf[256];
  22. UNchar    *M;
  23. double    b,c;
  24. void    cb1_sub1(),cb1_sub2(),cb1_sub3(),cb1_sub4(),cb1_sub6(),cb1_sub7(),cb1_sub8(),cb1_sub9();
  25. r=0;
  26. switch( ty ){
  27. case('b'):
  28.     //------------- 原点X
  29.     r++;
  30. case('a'):
  31.     r++;
  32. case('1'):
  33.     if ( ty=='1' ) xx=17*16;
  34.     r=cb1_sizesub1(r,xx,yy,PreX1,0,PreX2,cb1_sub1);
  35.     if ( r==0 && ty=='1' )
  36.         r=click_botton1( '2',xx+80,yy );
  37.     break;
  38. case('d'):
  39.     //------------- 原点Y
  40.     r++;
  41. case('c'):
  42.     r++;
  43. case('2'):
  44.     if ( ty=='2' ) xx=22*16;
  45.     r=cb1_sizesub1(r,xx,yy,PreY1,0,PreY2,cb1_sub2);
  46.     if ( r==0 && ty=='2' )
  47.         r=click_botton1( '3',xx-80,yy+32 );
  48.     break;
  49. case('f'):
  50.     //------------- 幅
  51.     r++;
  52. case('e'):
  53.     r++;
  54. case('3'):
  55.     if ( ty=='3' ) xx=17*16;
  56.     r=cb1_sizesub1(r,xx,yy,PreX2-PreX1,1,(10224-PreX1),cb1_sub3);
  57.     if ( r==0 && ty=='3' )
  58.         r=click_botton1( '4',xx+80,yy );
  59.     break;
  60. case('h'):
  61.     //------------- 高さ
  62.     r++;
  63. case('g'):
  64.     r++;
  65. case('4'):
  66.     if ( ty=='4' ) xx=22*16;
  67.     r=cb1_sizesub1(r,xx,yy,PreY2-PreY1,1,(14064-PreY1),cb1_sub4);
  68.     break;
  69. case('5'):
  70.     //-------------- 比率
  71.     //-- DPI 
  72.     b=(double)ScanDpiY/(double)ScanDpiX;
  73.     if ( b<10. )
  74.         sprintf(buf,"%.2f",b );        //sprintf(buf,"%5.2f",b );
  75.     elif ( b<100. )
  76.         sprintf(buf,"%.1f",b );
  77.     else    sprintf(buf,"%.f",b );
  78.     M=(void*)InputStr(17*16+2,(yy&0xFFF0)+2,buf,5,0,2);
  79.     if ( M[0]==0 && M[0]==0xFF ){
  80.         ;
  81.     } else {
  82.         c=atof(M);
  83.         if ( c>=0.01 && c<32.0 ){
  84.             if ( ImageDirec==0 ){    // 0;縦 1;横
  85.                 ScanDpiX=ScanDpiY/c;
  86.             } else {
  87.                 ScanDpiY=ScanDpiX*c;
  88.             }
  89.              if ( CalcScanDD()!=0 )
  90.                 CalcScanDot();
  91.         }
  92.     }
  93.     ScanSetMode(-1);
  94.     break;
  95. case('A'):
  96.     //----------------- ドット
  97.     PosSetDraw(PreX1,PreY1,PreX2,PreY2,0);
  98.     break;
  99. case('B'):
  100.     //----------------- センチ
  101.     PosSetDraw(PreX1,PreY1,PreX2,PreY2,1);
  102.     break;
  103. case('C'):
  104.     //----------------- インチ
  105.     PosSetDraw(PreX1,PreY1,PreX2,PreY2,2);
  106.     break;
  107. case('j'):
  108.     //------------- 取り込みX DOT
  109.     r++;
  110. case('i'):
  111.     r++;
  112. case('6'):
  113.     //ScanSetDraw(0,-1,-1);
  114.     if ( ty=='6' ) xx=20*16;
  115.     i=ScanDotX;
  116.     r=cb1_sizesub2(r,xx,yy,0,cb1_sub6);
  117.     if ( r==0 && i!=ScanDotX )
  118.         chgsize=0;
  119.     if ( r==0 && ty=='6' )
  120.         r=click_botton1( '7',xx,yy+16 );
  121.     break;
  122. case('l'):
  123.     //------------- 取り込みY DOT
  124.     r++;
  125. case('k'):
  126.     r++;
  127. case('7'):
  128.     //ScanSetDraw(0,-1,-1);
  129.     if ( ty=='7' ) xx=20*16;
  130.     i=ScanDotY;
  131.     r=cb1_sizesub2(r,xx,yy,1,cb1_sub7);
  132.     if ( r==0 && i!=ScanDotY )
  133.         chgsize=1;
  134.     break;
  135. case('n'):
  136.     //------------- 取り込みX DPI
  137.     r++;
  138. case('m'):
  139.     r++;
  140. case('8'):
  141.     //ScanSetDraw(1,-1,-1);
  142.     if ( ty=='8' ) xx=20*16;
  143.     i=ScanDpiX;
  144.     r=cb1_sizesub2(r,xx,yy,2,cb1_sub8);
  145.     if ( r==0 && i!=ScanDpiX )
  146.         chgsize=0;
  147.     if ( r==0 && ty=='8' )
  148.         r=click_botton1( '9',xx,yy+16 );
  149.     break;
  150. case('p'):
  151.     //------------- 取り込みY DPI
  152.     r++;
  153. case('o'):
  154.     r++;
  155. case('9'):
  156.     //ScanSetDraw(1,-1,-1);
  157.     if ( ty=='9' ) xx=20*16;
  158.     i=ScanDpiY;
  159.     r=cb1_sizesub2(r,xx,yy,3,cb1_sub9);
  160.     if ( r==0 && i!=ScanDpiY )
  161.         chgsize=1;
  162.     break;
  163. case('D'):
  164.     //------------- 取り込みモード
  165.     ScanSetMode(0);
  166.     break;
  167. case('E'):
  168.     ScanSetMode(1);
  169.     break;
  170. }
  171. return(r);
  172. }
  173. /*************************************
  174.     (上)上部サブルーチン
  175. *************************************/
  176. int    cb1_sizesub1(ty,xx,yy,ii,ll,hh,sub)
  177. int    ty,xx,yy,ii,hh,ll;
  178. void    (*sub)();
  179. {
  180. int    i,j,l,h,s,r;
  181. UNchar    *M;
  182. UNchar    buf[128];
  183. if ( PreUnit==0 ){
  184.     // dot
  185.     i=(ii+10-1)/10;
  186.     l= ll      /10;
  187.     h= hh      /10;
  188.     j=1;
  189.     s=1;
  190. } elif ( PreUnit==1 ){
  191.     // cm
  192.     i=(ii*10 *216 +10224-1)/10224;
  193.     l= ll*10 *216         /10224;
  194.     h= hh*10 *216         /10224;
  195.     j=2;
  196.     s=10;
  197.     M="%.1f";
  198. } else {
  199.     // inch
  200.     i=(ii*100 *852 +1022400-1)/1022400;
  201.     l= ll*100 *852            /1022400;
  202.     h= hh*100 *852            /1022400;
  203.     j=2;
  204.     s=100;
  205.     M="%.2f";
  206. }
  207. if ( ty==0 ){
  208.     if ( j==1 )
  209.         sprintf(buf,"%d",i);        //sprintf(buf,"%5d",i);
  210.     else    sprintf(buf,M,(double)i/(double)s);
  211.     M=(void*)InputStr((xx&0xFFF0)+2,(yy&0xFFF0)+2,buf,5,0,j);
  212.     if ( M[0]==0 && M[1]==0xFF ){
  213.         PosSetDraw(-1,-1,-1,-1,-1);
  214.         r=1;
  215.     } else {
  216.         i=(int)(atof(M)*(double)s);
  217.         if ( i<l || i>=h ){
  218.             PosSetDraw(-1,-1,-1,-1,-1);
  219.             r=1;
  220.         } else {
  221.             (*sub)(i);
  222.             r=0;
  223.         }
  224.     }
  225. } else {
  226.     r=kazu_move(((ty==1)?xx:xx-16)&0xFFF0,yy&0xFFF0,0,i,l,h-1,sub);
  227. }
  228. return(r);
  229. }
  230. /*+++++++++++++++++++++++++++++++*/
  231. void    cb1_sub1(int l)
  232. {
  233. int    i;
  234. l=cb1_sub1234_sub(l);
  235. i=PreX2+(l-PreX1);
  236. if ( i>=10224 )
  237.     i=10224;
  238. PosSetDraw(l,PreY1,i,PreY2,-1);
  239. CalcScanPara();
  240. }
  241. /*++++++++++*/
  242. void    cb1_sub2(int l)
  243. {
  244. int    i;
  245. l=cb1_sub1234_sub(l);
  246. i=PreY2+(l-PreY1);
  247. if ( i>=14064 )
  248.     i=14064;
  249. PosSetDraw(PreX1,l,PreX2,i,-1);
  250. CalcScanPara();
  251. }
  252. /*++++++++++*/
  253. void    cb1_sub3(int l)
  254. {
  255. l=cb1_sub1234_sub(l);
  256. PosSetDraw(PreX1,PreY1,PreX1+l,PreY2,-1);
  257. CalcScanPara();
  258. }
  259. /*++++++++++*/
  260. void    cb1_sub4(int l)
  261. {
  262. l=cb1_sub1234_sub(l);
  263. PosSetDraw(PreX1,PreY1,PreX2,PreY1+l,-1);
  264. CalcScanPara();
  265. }
  266. /*+++++*/
  267. int    cb1_sub1234_sub(int l)
  268. {
  269. if ( PreUnit==0 ){
  270.     // dot
  271.     l=l*10;
  272. } elif ( PreUnit==1 ){
  273.     // cm
  274.     l=l*10224/216 /10;
  275. } else {     // inch
  276.     l=l*1022400/852 /100;
  277. }
  278. return(l);
  279. }
  280. /*************************************
  281.     (上)下部サブルーチン
  282. *************************************/
  283. int    cb1_sizesub2(ty,xx,yy,z,sub)
  284. int    ty,xx,yy,z;
  285. void    (*sub)();
  286. {
  287. int    i,j,l,h,s,r;
  288. UNchar    *M;
  289. UNchar    buf[128];
  290. if ( z<=1  ){            // スキャン値の単位 0;DOT 1;DPI
  291.     // DOT
  292.     i=(z==0)?(ScanDotX/DOTB):(ScanDotY/DOTB);
  293.     l=30;
  294.     //h=13632;    // 1600dpi*8.52inch
  295.     h=4096;        // 1600dpi*8.52inch
  296.     j=1;
  297.     s=1;
  298.     sprintf(buf,"%d",i);
  299. } else {
  300.     // DPI
  301.     i=(z==2)?(ScanDpiX/1000):(ScanDpiY/1000);
  302.     l=16*DPIB/1000;
  303.     if ( jxscanner==_JX250_  || jxscanner==_JX270_ )
  304.         h=1591*DPIB/1000;
  305.     elif ( jxscanner==_JX325_ )
  306.         h=599*DPIB/1000;
  307.     else    h=2400*DPIB/1000;    // 350,330
  308.     j=2;
  309.     s=DPIB/1000;
  310.     sprintf(buf,"%.1f",(double)i/(double)s);
  311. }
  312. if ( ty==0 ){
  313.     M=(void*)InputStr(320+2,(yy&0xFFF0)+2,buf,5,0,j);
  314.     CRTVDISP();
  315.     if ( M[0]==0 && M[1]==0xFF ){
  316.         ScanSetMode(-1);
  317.         r=1;
  318.     } else {
  319.         i=(int)(atof(M)*(double)s);
  320.         if ( i<l || i>h ){
  321.             ScanSetMode(-1);
  322.             r=1;
  323.         } else {
  324.             (*sub)(i);
  325.             r=0;
  326.         }
  327.     }
  328. } else {
  329.     r=kazu_move(((ty==1)?xx:xx-16)&0xFFF0,yy&0xFFF0,0,i,l,h,sub);
  330. }
  331. return(r);
  332. }
  333. /*+++++++++++*/
  334. void    cb1_sub6(int l)
  335. {
  336. ScanSetDraw(0,l*DOTB,-1);
  337. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  338. }
  339. /*++++++++++*/
  340. void    cb1_sub7(int l)
  341. {
  342. ScanSetDraw(0,-1,l*DOTB);
  343. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  344. }
  345. /*+++++++++++*/
  346. void    cb1_sub8(int l)
  347. {
  348. ScanSetDraw(1,l*1000,-1);
  349. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  350. }
  351. /*++++++++++*/
  352. void    cb1_sub9(int l)
  353. {
  354. ScanSetDraw(1,-1,l*1000);
  355. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  356. }
  357. /************************************************************
  358.     左下群 ボタンチェック
  359. [out] r= 0; 正常終了
  360.      1; キャンセル終了
  361.     99; 終了
  362. *************************************************************/
  363. int    click_botton2( ty,xx,yy )
  364. int    ty,xx,yy;
  365. {
  366. int    r,x,y;
  367. void    cb2_sub1(),cb2_sub2(),cb2_sub3(),cb2_sub4(),cb2_sub6(),cb2_sub7();
  368. r=0;
  369. switch( ty ){
  370. case('1'):
  371.     //------------ カラー
  372.     ChanImageMode(0);
  373.     break;
  374. case('2'):
  375.     //------------ 白黒
  376.     ChanImageMode(1);
  377.     break;
  378. case('9'):
  379.     //------------ 24bit
  380.     if ( mat_vadds!=0 )
  381.         break;
  382.  
  383.     FullColor=1;
  384.     ImageColMode=-1;
  385.     ChanImageColMode(0);
  386.     break;
  387. case('3'):
  388.     //------------ 多値
  389.     FullColor=0;
  390.     ImageColMode=-1;
  391.     ChanImageColMode(0);
  392.     break;
  393. case('4'):
  394.     //------------ 二値
  395.     FullColor=0;
  396.     ChanImageColMode(1);
  397.     break;
  398. case('5'):
  399. case('6'):
  400.     //------------ 縦/横
  401.     if ( ty=='5' ){
  402.         if ( ImageDirec==0 )
  403.             break;
  404.         ChanImageDirec(0);
  405.     } else {
  406.         if ( ImageDirec==1 )
  407.             break;
  408.         ChanImageDirec(1);
  409.     }
  410.     x=ScanDotX;
  411.     y=ScanDotY;
  412.     if ( AspMode==0 ){
  413.         // 2:3
  414.         ScanDotX=(y*2+1)/3;
  415.         ScanDotY=(x*3+2)/2;
  416.     } else {
  417.         // 1:1
  418.         ScanDotX=y;
  419.         ScanDotY=x;
  420.     }
  421.     CalcScanDpi();
  422.     PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  423.     ScanSetMode(-1);
  424.     break;
  425. case('7'):
  426.     //------------ ポジ
  427.     ChanPojiNegaMode(0);
  428.     break;
  429. case('8'):
  430.     //------------ ネガ
  431.     ChanPojiNegaMode(1);
  432.     break;
  433. }
  434. return(r);
  435. }
  436. /************************************************************
  437.     右下群 ボタンチェック
  438. [out] r= 0; 正常終了
  439.      1; キャンセル終了
  440.     99; 終了
  441. *************************************************************/
  442. int    click_botton3( ty,xx,yy )
  443. int    ty,xx,yy;
  444. {
  445. int    r,litup;
  446. UNchar    buf[256];
  447. void    cb3_sub1(),cb3_sub2(),cb3_sub3(),cb3_sub4(),cb3_sub5(),cb3_sub6(),cb3_sub7(),cb3_sub7_();
  448. void    cb3_sub8(),cb3_sub9(),cb3_sub0();
  449. litup=1000;
  450. if ( jxscanner==_JX350_ )
  451.     litup=600;
  452. r=0;
  453. switch( ty ){
  454. case('A'):
  455.     //------------- 濃度補正
  456.     r++;
  457. case('b'):
  458.     r++;
  459. case('a'):
  460.     r++;
  461. case('1'):
  462.     if ( ty=='1' ) xx=23*16;
  463.     if ( ty=='A' ) xx=27*16;
  464.     if ( ImageColMode!=0 )        // 0;多値 1;二値
  465.         break;
  466.     sprintf(buf,"%d",Bright-128 );
  467.     r=cb3_sizesub1(r,xx,yy,1,Bright-128,-127,127,buf,cb3_sub1);
  468.     break;
  469. case('B'):
  470.     //------------- 明度 R | BW
  471.     r++;
  472. case('d'):
  473.     r++;
  474. case('c'):
  475.     r++;
  476. case('2'):
  477.     if ( ty=='2' ) xx=23*16;
  478.     if ( ty=='B' ) xx=27*16;
  479.     if ( ImageMode==0 ){
  480.         // カラー
  481.         sprintf(buf,"%d",LightR-0x8000 );
  482.         r=cb3_sizesub1(r,xx,yy,1,LightR-0x8000,-40,litup,buf,cb3_sub2);
  483.         if ( r==0 && ty=='2' )
  484.             r=click_botton3( '3',xx,yy+16 );
  485.     } else {
  486.         sprintf(buf,"%d",LightM-0x8000 );
  487.         r=cb3_sizesub1(r,xx,yy,1,LightM-0x8000,-40,litup,buf,cb3_sub2);
  488.     }
  489.     break;
  490. case('C'):
  491.     //------------- 明度 G
  492.     r++;
  493. case('f'):
  494.     r++;
  495. case('e'):
  496.     r++;
  497. case('3'):
  498.     if ( ty=='3' ) xx=23*16;
  499.     if ( ty=='C' ) xx=27*16;
  500.     if ( ImageMode==0 ){
  501.         // カラー
  502.         sprintf(buf,"%d",LightG-0x8000 );
  503.         r=cb3_sizesub1(r,xx,yy,1,LightG-0x8000,-40,litup,buf,cb3_sub3);
  504.         if ( r==0 && ty=='3' )
  505.             r=click_botton3( '4',xx,yy+16 );
  506.     }
  507.     break;
  508. case('D'):
  509.     //------------- 明度 B
  510.     r++;
  511. case('h'):
  512.     r++;
  513. case('g'):
  514.     r++;
  515. case('4'):
  516.     if ( ty=='4' ) xx=23*16;
  517.     if ( ty=='D' ) xx=27*16;
  518.     if ( ImageMode==0 ){
  519.         // カラー
  520.         sprintf(buf,"%d",LightB-0x8000 );
  521.         r=cb3_sizesub1(r,xx,yy,1,LightB-0x8000,-40,litup,buf,cb3_sub4);
  522.     }
  523.     break;
  524. case('E'):
  525.     //------------- γ R | BW
  526.     r++;
  527. case('j'):
  528.     r++;
  529. case('i'):
  530.     r++;
  531. case('5'):
  532.     if ( ty=='5' ) xx=23*16;
  533.     if ( ty=='E' ) xx=27*16;
  534.     if ( ImageColMode!=0 )
  535.         break;
  536.     if ( ImageMode==0 ){
  537.         // カラー
  538.         sprintf(buf,"%.2f",(double)GammaR/100. );
  539.         r=cb3_sizesub1(r,xx,yy,100,GammaR,1,999,buf,cb3_sub5);
  540.         if ( r==0 && ty=='5' )
  541.             r=click_botton3( '6',xx,yy+16 );
  542.     } else {
  543.         sprintf(buf,"%.2f",(double)GammaM/100. );
  544.         r=cb3_sizesub1(r,xx,yy,100,GammaM,1,999,buf,cb3_sub5);
  545.     }
  546.     break;
  547. case('F'):
  548.     //------------- γ G
  549.     r++;
  550. case('l'):
  551.     r++;
  552. case('k'):
  553.     r++;
  554. case('6'):
  555.     if ( ty=='6' ) xx=23*16;
  556.     if ( ty=='F' ) xx=27*16;
  557.     if ( ImageColMode!=0 )
  558.         break;
  559.     if ( ImageMode==0 ){
  560.         // カラー
  561.         sprintf(buf,"%.2f",(double)GammaG/100. );
  562.         r=cb3_sizesub1(r,xx,yy,100,GammaG,1,999,buf,cb3_sub6);
  563.         if ( r==0 && ty=='6' )
  564.             r=click_botton3( '7',xx,yy+16 );
  565.     }
  566.     break;
  567. case('G'):
  568.     //------------- γ B
  569.     r++;
  570. case('n'):
  571.     r++;
  572. case('m'):
  573.     r++;
  574. case('7'):
  575.     if ( ty=='7' ) xx=23*16;
  576.     if ( ty=='G' ) xx=27*16;
  577.     if ( ImageColMode!=0 )
  578.         break;
  579.     if ( ImageMode==0 ){
  580.         // カラー
  581.         sprintf(buf,"%.2f",(double)GammaB/100. );
  582.         r=cb3_sizesub1(r,xx,yy,100,GammaB,1,999,buf,cb3_sub7);
  583.     }
  584.     break;
  585. case('H'):
  586.     //------------- γ ALL
  587.     r++;
  588. case('p'):
  589.     r++;
  590. case('o'):
  591.     r++;
  592.     if ( ty=='H' ) xx=27*16;
  593.     if ( ImageColMode!=0 )
  594.         break;
  595.     if ( ImageMode==0 ){
  596.         // カラー
  597.         sprintf(buf,"%.2f",(double)((GammaR+GammaG+GammaB)/3)/100. );
  598.         r=cb3_sizesub1(r,xx,yy,100,(GammaR+GammaG+GammaB)/3,1,999,buf,cb3_sub7_);
  599.         BarView(368/16+4,384/16,-1);
  600.     }
  601.     break;
  602. case('I'):
  603.     //------------- しきい値  R | BW
  604.     r++;
  605. case('r'):
  606.     r++;
  607. case('q'):
  608.     r++;
  609. case('8'):
  610.     if ( ty=='8' ) xx=23*16;
  611.     if ( ty=='I' ) xx=27*16;
  612.     if ( ImageColMode==0 )
  613.         break;
  614.     if ( ImageMode==0 ){
  615.         // カラー
  616.         sprintf(buf,"%d",ThreR);
  617.         r=cb3_sizesub1(r,xx,yy,1,ThreR,0,255,buf,cb3_sub8);
  618.         if ( r==0 && ty=='8' )
  619.             r=click_botton3( '9',xx,yy+16 );
  620.     } else {
  621.         sprintf(buf,"%d",ThreM);
  622.         r=cb3_sizesub1(r,xx,yy,1,ThreM,0,255,buf,cb3_sub8);
  623.     }
  624.     break;
  625. case('J'):
  626.     //------------- しきい値  G
  627.     r++;
  628. case('t'):
  629.     r++;
  630. case('s'):
  631.     r++;
  632. case('9'):
  633.     if ( ty=='9' ) xx=23*16;
  634.     if ( ty=='J' ) xx=27*16;
  635.     if ( ImageColMode==0 )
  636.         break;
  637.     if ( ImageMode==0 ){
  638.         // カラー
  639.         sprintf(buf,"%d",ThreG);
  640.         r=cb3_sizesub1(r,xx,yy,1,ThreG,0,255,buf,cb3_sub9);
  641.         if ( r==0 && ty=='9' )
  642.             r=click_botton3( '0',xx,yy+16 );
  643.     }
  644.     break;
  645. case('K'):
  646.     //------------- しきい値  B
  647.     r++;
  648. case('v'):
  649.     r++;
  650. case('u'):
  651.     r++;
  652. case('0'):
  653.     if ( ty=='0' ) xx=23*16;
  654.     if ( ty=='K' ) xx=27*16;
  655.     if ( ImageColMode==0 )
  656.         break;
  657.     if ( ImageMode==0 ){
  658.         // カラー
  659.         sprintf(buf,"%d",ThreB);
  660.         r=cb3_sizesub1(r,xx,yy,1,ThreB,0,255,buf,cb3_sub0);
  661.     }
  662.     break;
  663. case('W'):
  664.     //----------- ドロップカラー なし
  665.     if ( ImageMode!=0 )    // 0;カラー 1;白黒
  666.         DropColorSetView(0);
  667.     break;
  668. case('X'):
  669.     //----------- ドロップカラー R
  670.     if ( ImageMode!=0 )    // 0;カラー 1;白黒
  671.         DropColorSetView(1);
  672.     break;
  673. case('Y'):
  674.     //----------- ドロップカラー G
  675.     if ( ImageMode!=0 )    // 0;カラー 1;白黒
  676.         DropColorSetView(2);
  677.     break;
  678. case('Z'):
  679.     //----------- ドロップカラー B
  680.     if ( ImageMode!=0 )    // 0;カラー 1;白黒
  681.         DropColorSetView(3);
  682.     break;
  683. }
  684. return(r);
  685. }
  686. /*************************************
  687.     (下)右部サブルーチン
  688. *************************************/
  689. int    cb3_sizesub1(ty,xx,yy,s,ii,ll,hh,st,sub)
  690. int    ty,xx,yy,ii,hh,ll,s;
  691. UNchar    *st;
  692. void    (*sub)();
  693. {
  694. int    i,r;
  695. UNchar    *M;
  696. if ( ty==0 ){
  697.     M=(void*)InputStr((xx&0xFFF0)+2,(yy&0xFFF0)+2,st,5,0,2);
  698.     CRTVDISP();
  699.     if ( M[0]==0 && M[1]==255 ){
  700.         (*sub)(ii);
  701.         r=1;
  702.     } else {
  703.         i=(int)(atof(M)*(double)s);
  704.         if ( i<ll || i>hh ){
  705.             (*sub)(ii);
  706.             r=1;
  707.         } else {
  708.             (*sub)(i);
  709.             r=0;
  710.         }
  711.     }
  712. } elif ( ty<=2 ){
  713.     r=kazu_move(((ty==1)?xx:xx-16)&0xFFF0,yy&0xFFF0,0,ii,ll,hh,sub);
  714. } else {
  715.     r=kazu_move(xx&0xFFF0,yy&0xFFF0,-1,ii,ll,hh,sub);
  716. }
  717. return(r);
  718. }
  719. /*+++++++++++++++++++++++++++++++*/
  720. void    cb3_sub1(int l)
  721. {
  722. BrightSetDraw(l+128);
  723. }
  724. /*++++++++++*/
  725. void    cb3_sub2(int l)
  726. {
  727. if ( jxscanner==_JX350_ ){
  728.     // JX350
  729.     if ( ImageMode==0 ){
  730.         // カラー
  731.         LightSetDraw(-1,l+0x8000,l+0x8000,l+0x8000);
  732.     } else {
  733.         LightSetDraw(l+0x8000,-1,-1,-1);
  734.     }
  735. } else {
  736.     if ( ImageMode==0 ){
  737.         // カラー
  738.         LightSetDraw(-1,l+0x8000,-1,-1);
  739.     } else {
  740.         LightSetDraw(l+0x8000,-1,-1,-1);
  741.     }
  742. }
  743. }
  744. /*++++++++++*/
  745. void    cb3_sub3(int l)
  746. {
  747. if ( jxscanner==_JX350_ ){
  748.     // JX350
  749.     LightSetDraw(-1,l+0x8000,l+0x8000,l+0x8000);
  750. } else {
  751.     LightSetDraw(-1,-1,l+0x8000,-1);
  752. }
  753. }
  754. /*++++++++++*/
  755. void    cb3_sub4(int l)
  756. {
  757. if ( jxscanner==_JX350_ ){
  758.     // JX350
  759.     LightSetDraw(-1,l+0x8000,l+0x8000,l+0x8000);
  760. } else {
  761.     LightSetDraw(-1,-1,-1,l+0x8000);
  762. }
  763. }
  764. /*++++++++++*/
  765. void    cb3_sub5(int l)
  766. {
  767. if ( ImageMode==0 ){
  768.     // カラー
  769.     GammaSetView(-1,l,-1,-1);
  770. } else {
  771.     GammaSetView(l,-1,-1,-1);
  772. }
  773. }
  774. /*++++++++++*/
  775. void    cb3_sub6(int l)
  776. {
  777. GammaSetView(-1,-1,l,-1);
  778. }
  779. /*++++++++++*/
  780. void    cb3_sub7(int l)
  781. {
  782. GammaSetView(-1,-1,-1,l);
  783. }
  784. /*++++++++++*/
  785. void    cb3_sub7_(int l)
  786. {
  787. BarView(368/16+4,384/16,l*62/999 );
  788. GammaSetView(-1,l,l,l);
  789. }
  790. /*++++++++++*/
  791. void    cb3_sub8(int l)
  792. {
  793. if ( ImageMode==0 ){
  794.     // カラー
  795.     ThreSetView(-1,l,-1,-1);
  796. } else {
  797.     ThreSetView(l,-1,-1,-1);
  798. }
  799. }
  800. /*++++++++++*/
  801. void    cb3_sub9(int l)
  802. {
  803. ThreSetView(-1,-1,l,-1);
  804. }
  805. /*++++++++++*/
  806. void    cb3_sub0(int l)
  807. {
  808. ThreSetView(-1,-1,-1,l);
  809. }
  810. /************************************************************
  811.     倍率ボタンチェック
  812. [out] r= 0; 正常終了
  813.      1; キャンセル終了
  814.     99; 終了
  815. *************************************************************/
  816. int    click_botton4( xx )
  817. int    xx;
  818. {
  819. int    r;
  820. void    cb4_sub();
  821. r=kazu_move(13*16,0,0,PreBai,0,3,cb4_sub);        // x4 までにしておこう
  822. return(r);
  823. }
  824. /*++++++++++*/
  825. void    cb4_sub(int l)
  826. {
  827. int    i;
  828. PreBai=l;
  829. i=1<<PreBai;
  830. if ( PreBai!=0 ){
  831.     if ( PrePX>(232-(232/i)) )
  832.         PrePX=232-(232/i);
  833.     if ( PrePY>(480-(480/i)) )
  834.         PrePY=480-(480/i);
  835. }
  836. PosDedraw();
  837. PreviewView();
  838. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  839. }
  840. /************************************************************
  841.     縦バー(ボタン)
  842. [out] r= 0; 正常終了
  843.      1; キャンセル終了
  844.     99; 終了
  845. *************************************************************/
  846. int    click_botton6( yy,bt )
  847. int    yy,bt;
  848. {
  849. int    i,j,r,sy,b,bi,yo,py,y;
  850. void    cb6_sub1();
  851. if ( bt==0 ){
  852.     if ( PreBai==0 ){
  853.         r=kazu_move(0,yy*16,1,PrePY/8,PrePY/8,PrePY/8,cb6_sub1);
  854.     } else {
  855.         i=1<<PreBai;
  856.         j=( yy==1 )?1:2;
  857.         r=kazu_move(0,yy*16,j,PrePY/8,0,(480/8-(480/8/i))+1,cb6_sub1);
  858.     }
  859. } else {
  860.     bi=1<<PreBai;
  861.     j=PrePY *(30*16-32)/480 +32 ;
  862.     i=480/bi *(30*16-32)/480 +j;
  863.     if ( yy<j || yy>i )
  864.         return(0);
  865.     yo=-1;
  866.     sy=yy;
  867.     py=PrePY;
  868.     while( MS_LSW()!=0 && (b=MS_RSW())==0 ){
  869.         _dos_change_pr();
  870.         yy=( i=_ms_curgt_() )&0xFFFF;
  871.         if ( yo==yy )
  872.             continue;
  873.         yo=yy;
  874.         y=(yy-sy)*480/(30*16-32);
  875.         j=py+y;
  876.         if ( j<0 )
  877.             j=0;
  878.         if ( j>=(480-(480/bi)) )
  879.             j=(480-(480/bi))-1+1;
  880.         if ( PrePY!=j ){
  881.             PrePY=j;
  882.             PosDedraw();
  883.             PreviewView();
  884.             PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  885.             CRTVDISP();
  886.         }
  887.     }
  888.     r=0;
  889. }
  890. return(r);
  891. }
  892. /*++++++++++*/
  893. void    cb6_sub1(int l)
  894. {
  895. int    i;
  896. PosDedraw();
  897. i=1<<PreBai;
  898. PrePY=l*8;
  899. if ( PreBai!=0 ){
  900.     if ( PrePY>=(480-(480/i)) )
  901.         PrePY=(480-(480/i))-1+1;
  902. }
  903. PreviewView();
  904. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  905. }
  906. /************************************************************
  907.     横バーボタン
  908. [out] r= 0; 正常終了
  909.      1; キャンセル終了
  910.     99; 終了
  911. *************************************************************/
  912. int    click_botton7( xx,bt )
  913. int    xx,bt;
  914. {
  915. int    i,j,r,xo,sx,b,x,bi,yy,px;
  916. void    cb7_sub1();
  917. if ( bt==0 ){
  918.     if ( PreBai==0 ){
  919.         r=kazu_move(xx*16,31*16,1,PrePX/8,PrePX/8,PrePX/8,cb7_sub1);
  920.     } else {
  921.         i=1<<PreBai;
  922.         j=( xx==1 )?1:2;
  923.         r=kazu_move(xx*16,31*16,j,PrePX/8,0,(232/8-(232/8/i))+1,cb7_sub1);
  924.     }
  925. } else {
  926.     bi=1<<PreBai;
  927.     j=PrePX *(15*16-32)/232 +32;
  928.     i=232/bi *(15*16-32)/232 +j;
  929.     if ( xx<j || xx>i )
  930.         return(0);
  931.     xo=-1;
  932.     sx=xx;
  933.     px=PrePX;
  934.     while( MS_LSW()!=0 && (b=MS_RSW())==0 ){
  935.         _dos_change_pr();
  936.         yy=( i=_ms_curgt_() )&0xFFFF;
  937.         xx=i>>16;
  938.         if ( xo==xx )
  939.             continue;
  940.         xo=xx;
  941.         x=(xx-sx)*232/(15*16-32);
  942.         j=px+x;
  943.         if ( j<0 )
  944.             j=0;
  945.         if ( j>=(232-(232/bi)) )
  946.             j=(232-(232/bi))-1+1;
  947.         if ( PrePX!=j ){
  948.             PrePX=j;
  949.             PosDedraw();
  950.             PreviewView();
  951.             PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  952.             CRTVDISP();
  953.         }
  954.     }
  955.     r=0;
  956. }
  957. return(r);
  958. }
  959. /*++++++++++*/
  960. void    cb7_sub1(int l)
  961. {
  962. int    i;
  963. PosDedraw();
  964. i=1<<PreBai;
  965. PrePX=l*8;
  966. if ( PreBai!=0 ){
  967.     if ( PrePX>=(232-(232/i)) )
  968.         PrePX=(232-(232/i))-1+1;
  969. }
  970. PreviewView();
  971. PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  972. }
  973. /************************************************************
  974.     縦横バー
  975. [out] r= 0; 正常終了
  976.      1; キャンセル終了
  977.     99; 終了
  978. *************************************************************/
  979. int    click_bar( xx,yy )
  980. int    xx,yy;
  981. {
  982. int    i,j,r,yo,xo,sx,sy,x,y,bi,px,py;
  983. bi=1<<PreBai;
  984. xo=-1;
  985. yo=-1;
  986. sx=xx;
  987. sy=yy;
  988. px=PrePX;
  989. py=PrePY;
  990. MsPat(7);
  991. while( MS_RSW()!=0 ){
  992.     _dos_change_pr();
  993.     yy=( i=_ms_curgt_() )&0xFFFF;
  994.     xx=i>>16;
  995.     if ( xo==xx && yo==yy )
  996.         continue;
  997.     xo=xx;
  998.     yo=yy;
  999.     x=(xx-sx)/bi;
  1000.     y=(yy-sy)/bi;
  1001.     i=px-x;
  1002.     if ( i>=(232-(232/bi)) )
  1003.         i=(232-(232/bi))-1+1;
  1004.     if ( i<0 )
  1005.         i=0;
  1006.     j=py-y;
  1007.     if ( j>=(480-(480/bi)) )
  1008.         j=(480-(480/bi))-1+1;
  1009.     if ( j<0 )
  1010.         j=0;
  1011.     if ( PrePX!=i || PrePY!=j ){
  1012.         PrePX=i;
  1013.         PrePY=j;
  1014.         PosDedraw();
  1015.         PreviewView();
  1016.         PosSetDraw(PreX1,PreY1,PreX2,PreY2,-1);
  1017.         CRTVDISP();
  1018.     }
  1019. }
  1020. MsPat(0);
  1021. r=0;
  1022. return(r);
  1023. }
  1024.